package com.jzo2o.foundations.xxjob;

import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * \* User: chy
 * \* Date: 2025/9/29  11:19
 * \* Description:
 * \
 */
@Component
@Slf4j
public class TestMassiveJob {

    //todo:海量数据处理任务,在分布式集群中处理海量数据,可以实现不同的微服务拆分任务，实现数据分片处理.
    @XxlJob("MassiveJob")
    public void test() {

        // 获取当前微服务机器的分片参数
        int shardIndex = XxlJobHelper.getShardIndex();
        // 获取微服务机器的分片总数
        int shardTotal = XxlJobHelper.getShardTotal();
        log.info("分片参数：{}，分片总数：{}", shardIndex, shardTotal);

        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < 1000000; i++) {
            list.add(i);
        }

        //如果是当前微服务机器的分片开始执行任务
        int count = 0;
        for (int i = shardIndex; i < list.size(); i += shardTotal) {
            log.info("当前任务执行：{}", list.get(i));
            XxlJobHelper.handleSuccess();
            count++;
        }
        log.info("当前任务执行完成，共执行{}条数据", count);

        log.info("海量xxlJob任务开始执行");

    }
}
